# python3

from docxtpl import DocxTemplate, RichText

# 获取模板对象
tpl = DocxTemplate('docxtpl/template.docx')

context = {}

"""
以下为填充单个标签内容
    使用{{}}标签表示
    使用RichText(富文本)可改变文字样式
"""
# 设置好各标签需要填写的内容, 变量名可以是中文
context['courseinfo'] = {'course_name': '计算机科学与技术', 'course_id': '2022050513', '备注': '这里是备注！！！'}
# 将标签内容填入模板中 填充的样式将会和模板标签的样式一样
# tpl.render(context)

"""
以下为填充循环标签内容
    使用{{%p %}} {{%p endfor %}}标签表示
    循环还可以嵌套使用
"""
# 设置好循环内容
context['target'] = {'paragraphs': ['课程目标1', '课程目标2', '课程目标3']}
# 将标签内容填入模板中
# tpl.render(context)

"""
以下为填充表格标签内容
    使用{{%tc %}} {{%tc endfor %}}标签表格左右循环
    使用{{%tr %}} {{%tr endfor %}}标签表格上下循环
    循环还可以嵌套使用
    使用loop.index自动生成序号
"""
# 设置好循环内容
context['table'] = {'kcmbs': ['课程目标1', '课程目标2', '备注'],
           'chps': [
               {'number': '章节1', 'cols': ['章节1目标1', '章节1目标2'], 'remark': RichText('READ ONLY', color='FF0000', size=16)},
               {'number': '章节2', 'cols': ['章节2目标1', '章节2目标2'], 'remark': RichText('READ ONLY', color='000000', size=16)},
               {'number': '章节3', 'cols': ['章节3目标1', '章节3目标2'], 'remark': RichText('READ ONLY', color='FF0000', size=16)}]
           }
# 将标签内容填入模板中
tpl.render(context)

# 保存
tpl.save('docxtpl/docxtpl.docx')
